home *** CD-ROM | disk | FTP | other *** search
- class WaveManager implements Steppable
- {
- var enemyList;
- var minTime;
- var maxTime;
- var releaseTime;
- var maxPerWave = 3;
- var timer = 0;
- var dead = false;
- var endTimer = 0;
- function WaveManager(minTime, maxTime, maxPerWave)
- {
- this.enemyList = new Array();
- this.minTime = minTime;
- this.maxTime = maxTime;
- if(maxPerWave != null)
- {
- this.maxPerWave = maxPerWave;
- }
- this.releaseTime = CustomMath.randomRange(minTime,maxTime);
- this.timer = this.releaseTime - 30;
- Stepper.add(this);
- }
- function step()
- {
- if(this.timer > this.releaseTime)
- {
- this.releaseEnemies();
- this.timer = 0;
- }
- else
- {
- if(this.enemyList.size() <= 0 && this.isDone())
- {
- SoundManager.endLevel();
- LevelManager.signal();
- this.die();
- }
- this.timer = this.timer + 1;
- }
- }
- function push(e)
- {
- this.enemyList.push(e);
- this.shuffle();
- }
- function clear()
- {
- this.enemyList = new Array();
- }
- function shuffle()
- {
- var _loc5_ = 0;
- while(_loc5_ < 3)
- {
- var _loc2_ = 0;
- while(_loc2_ < this.enemyList.length)
- {
- var _loc3_ = this.enemyList[_loc2_];
- var _loc4_ = undefined;
- this.enemyList[_loc2_] = this.enemyList[_loc4_ = random(this.enemyList.length)];
- this.enemyList[_loc4_] = _loc3_;
- _loc2_ = _loc2_ + 1;
- }
- _loc5_ = _loc5_ + 1;
- }
- }
- function releaseEnemies()
- {
- var _loc5_ = CustomMath.randomRange(1,this.maxPerWave);
- var _loc3_ = 0;
- while(_loc3_ < this.maxPerWave)
- {
- if(this.enemyList.length <= 0)
- {
- return undefined;
- }
- var _loc4_ = this.enemyList.pop();
- var _loc2_ = this.getRandomPoint();
- switch(_loc4_)
- {
- case "Enemy":
- new Enemy(_loc2_.x,_loc2_.y);
- break;
- case "MovingEnemy":
- new MovingEnemy(_loc2_.x,_loc2_.y);
- break;
- case "SelfDestructingEnemy":
- new SelfDestructingEnemy(_loc2_.x,_loc2_.y);
- break;
- case "TeleportingEnemy":
- new TeleportingEnemy(_loc2_.x,_loc2_.y);
- break;
- case "StraightEnemy":
- new StraightEnemy(_loc2_.x,_loc2_.y);
- break;
- default:
- new Enemy(_loc2_.x,_loc2_.y);
- }
- _loc3_ = _loc3_ + 1;
- }
- }
- function getRandomPoint()
- {
- var _loc2_ = undefined;
- var _loc1_ = undefined;
- if(Math.random() < 0.5)
- {
- _loc1_ = CustomMath.randomRange(-30,Stage.height + 30);
- if(Math.random() < 0.5)
- {
- _loc2_ = CustomMath.randomRange(-40,-20);
- }
- else
- {
- _loc2_ = CustomMath.randomRange(Stage.width + 20,Stage.width + 40);
- }
- }
- else
- {
- _loc2_ = CustomMath.randomRange(-30,Stage.width + 30);
- if(Math.random() < 0.5)
- {
- _loc1_ = CustomMath.randomRange(-40,-20);
- }
- else
- {
- _loc1_ = CustomMath.randomRange(Stage.height + 20,Stage.height + 40);
- }
- }
- return new flash.geom.Point(_loc2_,_loc1_);
- }
- function getRandomX()
- {
- if(Math.random() < 0.5)
- {
- return Math.random() * 30 - 20;
- }
- return Math.random() * 30 + Stage.width;
- }
- function getRandomY()
- {
- if(Math.random() < 0.5)
- {
- return Math.random() * 30 - 20;
- }
- return Math.random() * 30 + Stage.height;
- }
- function isDone()
- {
- if(this.enemyList <= 0 && Missile.missiles.size() <= 0 && Enemy.enemies.size() <= 0 && !this.dead)
- {
- this.endTimer = this.endTimer + 1;
- }
- return this.endTimer >= 105;
- }
- function die()
- {
- this.dead = true;
- Stepper.remove(this);
- }
- }
-